package cn.bearspark.api.vo.main.happening;

import cn.bearspark.api.validation.Enumeration;
import cn.bearspark.api.vo.main.booklive.BookLiveInfo4PublishVO;
import cn.bearspark.api.vo.main.vote.VoteInfo4PublishVO;
import cn.bearspark.happening.enumeration.happening.AdvanceReleaseEnum;
import cn.bearspark.common.enumeration.CommentAbleEnum;
import cn.bearspark.common.enumeration.VisibilityEnum;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 发布动态的请求的视图对象
 *
 * @author f
 */
@Data
public class PublishHappeningReqVO {

    /**
     * 动态的标题，可以为 null
     */
    private String title;

    /**
     * 动态的内容
     */
    @NotBlank
    private String content;

    /**
     * 动态的可见性
     *
     * @see VisibilityEnum
     */
    @Enumeration(VisibilityEnum.class)
    private Integer visibility;

    /**
     * 动态的可评论性
     *
     * @see CommentAbleEnum
     */
    @Enumeration(CommentAbleEnum.class)
    private Integer commentAble;

    /**
     * 提前发布
     *
     * @see AdvanceReleaseEnum
     */
    @Enumeration(AdvanceReleaseEnum.class)
    private Integer advanceRelease;

    /**
     * 标签的 id，可以为 null
     */
    private Long tagId;

    /**
     * 图片的 url 的路径的集合，可以为 null
     */
    private List<String> imgUrlList;

    /**
     * 动态的发布时间
     */
    @NotNull
    private LocalDateTime pubTime;

    /**
     * 发布预约直播的信息，可以为 null
     */
    private BookLiveInfo4PublishVO bookLiveInfo;

    /**
     * 发布投票的信息，可以为 null
     */
    private VoteInfo4PublishVO voteInfo;

}
